/********************************
 * ETK - Easy ToolKit
 * Copyright (C) 2007-2008 Ekinoks (scv.ekinoks@gmail.com)
 * All rights reserved.
 *
 *    This file is part of ETK.
 *
 *    Foobar is free software; you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation; either version 2 of the License, or
 *    (at your option) any later version.
 *
 *    Foobar is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with Foobar; if not, write to the Free Software
 *    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 ***********************************************************************************/


#ifndef __ETK_SHUTTERSCROLLMODEL_H__
#define __ETK_SHUTTERSCROLLMODEL_H__


namespace etk
{
    class ShutterScroll;

    class ShutterScrollModel
    {
        public :

            ShutterScrollModel operator+ (const ShutterScrollModel & ss) const
            {
                ShutterScrollModel tmp(direction_ | ss.direction_);

                return tmp;
            }

            bool operator== (const ShutterScroll& shutterScroll) const;
            bool operator!= (const ShutterScroll& shutterScroll) const;

            bool operator== (const ShutterScrollModel& shutterScrollModel) const;
            bool operator!= (const ShutterScrollModel& shutterScrollModel) const;


            static const ShutterScrollModel ANY;
            static const ShutterScrollModel SCROLL_UP;
            static const ShutterScrollModel SCROLL_DOWN;
            static const ShutterScrollModel SCROLL_LEFT;
            static const ShutterScrollModel SCROLL_RIGHT;

        protected :

            ShutterScrollModel(int direction) : direction_(direction)
            {
            }

            int getDirection() const
            {
                return direction_;
            }

        private :

            friend class ToolKit;

            /*
            ALL             = 0
            SCROLL_UP       = 1<<0
            SCROLL_DOWN     = 1<<1
            SCROLL_LEFT     = 1<<2
            SCROLL_RIGHT    = 1<<3
            */
            int direction_;
    };
}

#endif // __ETK_SHUTTERSCROLLMODEL_H__
